Package de.yaams.extensions.rgssproject.database.form

Source Code of de.yaams.extensions.rgssproject.database.form.TroopEventPanel

/**
*
*/
package de.yaams.extensions.rgssproject.database.form;

import java.awt.GridLayout;
import java.util.ArrayList;

import javax.swing.JPanel;

import org.jruby.RubyArray;
import org.jruby.RubyObject;
import org.jruby.runtime.builtin.IRubyObject;

import de.yaams.extensions.rgssproject.RGSSProjectHelper;
import de.yaams.extensions.rgssproject.database.RGSS1Helper;
import de.yaams.extensions.rgssproject.database.RGSS1Helper.Type;
import de.yaams.extensions.rgssproject.database.SystemGObject;
import de.yaams.extensions.rgssproject.map.form.FormSwitchVarSelector;
import de.yaams.extensions.rgssproject.map.nevent.YEventCommandList;
import de.yaams.maker.helper.gui.YFactory;
import de.yaams.maker.helper.gui.form.FormCheckbox;
import de.yaams.maker.helper.gui.form.FormElement;
import de.yaams.maker.helper.gui.form.FormElementChangeListener;
import de.yaams.maker.helper.gui.form.FormEmpty;
import de.yaams.maker.helper.gui.form.FormHelper;
import de.yaams.maker.helper.gui.form.core.FormBuilder;
import de.yaams.maker.helper.gui.form.core.FormHeader;
import de.yaams.maker.helper.helpcenter.HelpViewer;
import de.yaams.maker.helper.language.I18N;
import de.yaams.maker.programm.project.Project;

/**
* @author abt
*
*/
public class TroopEventPanel extends JPanel {

  private static final long serialVersionUID = -7038427336325635360L;

  protected ArrayList<SystemGObject> elements;
  protected TroopEventPageList list;
  protected JPanel gContent;
  protected RubyObject pages;
  protected Project project;

  /**
   * Create a new GTab
   *
   * @param project
   */
  public TroopEventPanel(Project project, IRubyObject pages) {
    super(new GridLayout(1, 1));
    this.project = project;

    RubyArray ra = (RubyArray) pages;

    // convert code
    elements = new ArrayList<SystemGObject>();
    for (Object o : ra) {
      elements.add(new SystemGObject((RubyObject) o));
    }

    // build gui
    buildGui();
  }

  /**
   * Build the gui
   */
  protected void buildGui() {
    list = new TroopEventPageList(this);
    gContent = new JPanel(new GridLayout(1, 1));

    add(YFactory.createHorizontPanel(list, gContent, "troop.event.panel"));

    buildEmptyView();
  }

  /**
   * Remove all and show the help
   */
  protected void buildEmptyView() {

    // build panel
    gContent.removeAll();

    // add helpfile
    gContent.add(new HelpViewer("troop.pages"));

    // build it
    gContent.invalidate();
    gContent.revalidate();
  }

  /*
   * (non-Javadoc)
   *
   * @see de.yaams.packandgo.programm.tabs.YaTab#getContent()
   */
  public void buildInternContent(final int id) {

    // if (id > 0) {
    // build panel
    gContent.removeAll();

    // build it
    FormBuilder form = new FormBuilder("troop.event");
    buildForm(form, id);

    // add modi
    form.addChangeListener(new FormElementChangeListener() {

      @Override
      public void stateChanged(FormElement form) {
        // set modifizied
        elements.get(id).setModified(true);

      }
    });

    // build it
    gContent.add(form.getPanel(true));
    gContent.invalidate();
    gContent.revalidate();
    // } else {
    // buildEmptyView();
    // }
  }

  /*
   * (non-Javadoc)
   *
   * @see de.yaams.packandgo.programm.tabs.YaTab#getContent()
   */
  public void buildForm(FormBuilder form, int id) {
    // get page
    RubyObject page = elements.get(id).getObject();
    RubyObject condition = (RubyObject) page.getInstanceVariable("@condition");

    // build
    form.addElement("basic.span", RubyForm.getComboBoxNum(I18N.t("Span"), new String[] { "0", "1", "2" }, new String[] { "Battle",
        "Turn", "Movement" }, page, "@span"));

    form.addHeader("cond", new FormHeader(I18N.t("Bedingung"), "if").setCollapsed(true).setColumn(6));

    // add turn
    FormCheckbox c = RubyForm.getBoolean(I18N.t("Turn"), condition, "@turn_valid");
    form.addElement("cond.turn_a", c);
    form.addElement("cond.turn_turn_a",
        FormHelper.setEnabeldWhenRightElementSelect(c, RubyForm.getNumber("", condition, "@turn_a"), "true"));
    form.addElement("cond.turn_turn_b",
        FormHelper.setEnabeldWhenRightElementSelect(c, RubyForm.getNumber("+ X*", condition, "@turn_b"), "true"));
    c.informListeners();

    // add enemy
    c = RubyForm.getBoolean(I18N.t(RGSS1Helper.getName(Type.ENEMY)), condition, "@enemy_valid");
    form.addElement("cond.enemy_a", c);
    form.addElement("cond.enemy_def", FormHelper.setEnabeldWhenRightElementSelect(c, RubyForm.getNumber("", condition, "@enemy_index")
        .setMinMax(1, 8, 1), "true"));
    form.addElement(
        "cond.enemy_hp",
        FormHelper.setEnabeldWhenRightElementSelect(c,
            RubyForm.getNumber("Hp is or below (%):", condition, "@enemy_hp").setMinMax(0, 100, 1), "true"));
    c.informListeners();

    // add actor
    c = RubyForm.getBoolean(RGSS1Helper.getName(Type.ACTOR), condition, "@actor_valid");
    form.addElement("cond.actor_a", c);
    form.addElement("cond.actor_def", FormHelper.setEnabeldWhenRightElementSelect(c, new FormDBComboBox("", project, Type.ACTOR,
        condition, "@actor_id", true), "true"));
    form.addElement(
        "cond.actor_hp",
        FormHelper.setEnabeldWhenRightElementSelect(c,
            RubyForm.getNumber("Hp is or below (%):", condition, "@actor_hp").setMinMax(0, 100, 1), "true"));
    c.informListeners();

    // add actor
    c = RubyForm.getBoolean(RGSS1Helper.getName(Type.SWITCH), condition, "@switch_valid");
    form.addElement("cond.switch_a", c);
    form.addElement("cond.switch_id", FormHelper.setEnabeldWhenRightElementSelect(c, new FormSwitchVarSelector(project,
        I18N.t("Is on"), condition, "@switch_id", Type.SWITCH), "true"));
    form.addElement("cond.switch_id2", new FormEmpty());
    c.informListeners();

    // add code
    form.setCenter(new YEventCommandList(page.getInstanceVariable("@list"), project, null));
  }

  /**
   * @return the elements
   */
  public ArrayList<SystemGObject> getElements() {
    return elements;
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * de.yaams.packandgo.helper.gui.list.YSimpleList#getIcon(java.lang.Object)
   */
  public Object getIcon(final Integer o) {
    return "event_edit";
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * de.yaams.packandgo.helper.gui.list.YSimpleList#isModified(java.lang.Object
   * )
   */
  public boolean isModified(final Integer o) {
    return elements.get(o).isModified();
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * de.yaams.packandgo.helper.gui.list.YSimpleList#getText(java.lang.Object )
   */
  public Object getText(final Integer value) {
    return I18N.t("{0}.Seite", value + 1);
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * de.yaams.packandgo.helper.gui.list.YSimpleList#getDesc(java.lang.Object)
   */
  public String getDesc(final Integer o) {
    return null;
  }

  /**
   * Create a new object, for this type
   *
   * @return
   */
  public RubyObject createObject() {
    return (RubyObject) RGSSProjectHelper.getInterpreter(project).runScriptlet("return RPG::Troop::Page.new");
  }

  /**
   * Delete the selected element
   *
   * @param id
   */
  public void delObject(int id) {

    // last element?
    if (elements.size() - 1 == id) {
      // remove it
      elements.remove(id);
    } else {
      // reset only element
      elements.get(id).setObject(createObject());
      elements.get(id).setModified(true);
    }

    // inform tab
    buildEmptyView();
  }
}
TOP

Related Classes of de.yaams.extensions.rgssproject.database.form.TroopEventPanel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.